const { Controller } = require("egg");

class CommentController extends Controller {
    /**
     * 评论列表
     */
    async index() {
        // 解析路径参数
        const { bid } = this.ctx.params;
        // 调用 service 层，获取博客列表数据
        const comments = await this.service.comment.readList(bid);
        // 返回响应
        this.ctx.body = {
            code: 200,
            data: comments,
            message: "请求成功",
        };
    }

    /**
     * 添加评论
     */
    async create() {
        // 解析请求体
        const { bid, content } = this.ctx.request.body;
        // 非空校验
        if (!bid || !content) {
            this.ctx.body = {
                code: 400,
                message: "缺少必须参数",
            };
        }
        // 查询博客
        const blog = await this.service.blog.find(bid);
        // 判断该博客是否存在，不存在就不能添加评论
        if (!blog) {
            this.ctx.body = {
                code: 404,
                message: "评论的博客不存在",
            };
            return;
        }
        // 从 ctx 获取登录用户的 id
        const uid = this.ctx.user.id;
        // 为这篇博客添加评论
        const res = await this.service.comment.create({ bid, content, uid });
        // 判断是否插入成功
        if (res.affectedRows !== 1) {
            this.ctx.body = {
                code: 500,
                message:
                    "添加评论失败，请稍后再试，或者联系管理员：13811065680",
            };
            return;
        }
        // 添加成功
        this.ctx.body = {
            code: 201,
            message: "添加评论成功",
        };
    }
}

module.exports = CommentController;
